package com.wctj.api.business.cmb.service;

import com.wctj.api.base.Result;
import com.wctj.api.business.common.dto.*;

public interface CmbPayManagerService {
    /**
     * 提现接口  招行走分发策略
     * @param withdrawalOrderDTO
     * @param payOrderNum
     * @return
     */
    Result<Object> toWithdrawal(WithdrawalOrderDTO withdrawalOrderDTO, String payOrderNum);

    /**
     *单笔支付转账
     * @param singleTransferDTO
     * @param payOrderNum
     * @return
     */
    Result<Object> toSingleTransfer(SingleTransferDTO singleTransferDTO, String payOrderNum);

    /**
     *批量支付转账
     * @param batchTransferDTO
     * @param payOrderNum
     * @return
     */
    Result<Object> toBatchTransfer(BatchTransferDTO batchTransferDTO, String payOrderNum);

    /**
     * 获取招行对应账号详细信息
     * @param accountDTO
     * @return
     */
    Result<Object> getAccountDetail(AccountDTO accountDTO);

    /**
     * 查询交易信息列表
     * @param transactionDTO
     * @return
     */
    Result<Object> getTransactionList(TransactionDTO transactionDTO);

    /**
     * 电子回单异步查询
     * @param electronReceiptDTO
     * @return
     */
    Result<Object> getElectronReceipt(ElectronReceiptDTO electronReceiptDTO);

    /**
     * 异步打印结果查询
     * @param electronReceiptResultDTO
     * @return
     */
    Result<Object> getElectronReceiptResult(ElectronReceiptResultDTO electronReceiptResultDTO);


    /**
     *代发批次查询
     * @param releasePayBatchDTO
     * @return
     */
    Result<Object> getReleasePayBatch(ReleasePayBatchDTO releasePayBatchDTO);


    /**
     * 代发明细查询
     * @param releasePayDetailDTO
     * @return
     */
    Result<Object> getReleasePayDetail(ReleasePayDetailDTO releasePayDetailDTO);


    /**
     * 代发明细对账单查询请求
     * @param releasePayReconciliationDTO
     * @return
     */
    Result<Object> getReleasePayReconciliation(ReleasePayReconciliationDTO releasePayReconciliationDTO);

    /**
     * 代发明细对账单处理结果查询请求
     * @param releasePayReconciliationResultDTO
     * @return
     */
    Result<Object> getReleasePayReconciliationResult(ReleasePayReconciliationResultDTO releasePayReconciliationResultDTO);

    Result<Object> getEBankReconciliationPending(EBankReconciliationPendingDTO eBankReconciliationPendingDTO);

    Result<Object> getEBankReconciliationHandling(EBankReconciliationHandlingDTO eBankReconciliationHandlingDTO);

    Result<Object> getEBankReconciliationBusiness(EBankReconciliationBusinessDTO eBankReconciliationBusinessDTO);

    Result<Object> getEBankReconciliationDetail(EBankReconciliationDetailDTO eBankReconciliationDetailDTO);

    /**
     * 企银批量支付批次查询
     * @param paymentBatchDTO
     * @return
     */
    Result<Object> getPaymentBatch(PaymentBatchDTO paymentBatchDTO);


    /**
     * 企银批量支付明细查询
     * @param paymentDetailDTO
     * @return
     */
    Result<Object> getPaymentDetail(PaymentDetailDTO paymentDetailDTO);

    /**
     * 重复调用
     * @param repeatInvokingDTO
     * @return
     */
    Result<Object> repeatInvoking(RepeatInvokingDTO repeatInvokingDTO);

}
